package com.ms.teapuesto.service;

import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.ms.teapuesto.model.*;
import com.ms.teapuesto.persistence.jpa.*;
import com.ms.teapuesto.util.StringUtil;
import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;
import java.util.concurrent.*;

/**
 * Created by RAZANERO on 2/09/14.
 */
@Component
public class EquipoServiceImpl implements EquipoService {


    private static final Logger LOG = LoggerFactory.getLogger(EquipoServiceImpl.class);


    @Autowired
    private LigaRepository ligaRepository;

    @Autowired
    private FechaRepository fechaRepository;

    @Autowired
    private EquipoRepository equipoRepository;

    @Autowired
    private EventoRepository eventoRepository;

    @Autowired
    private LigaService ligaService;

    @Autowired
    private AnalisisService analisisService;

    @Transactional(propagation = Propagation.REQUIRED)
    public void stadisticaFechas() {
        for (Fecha fecha : fechaRepository.findAll()) {
            analisisService.execute(fecha);
            fechaRepository.save(fecha);
        }
    }


    public Equipo searchEquipos(String leagueName, String nombreLiveScore) throws Exception {
        List<Equipo> equipoList = equipoRepository.getEquipoList();
        List<Liga> ligaList = ligaRepository.getLigaList();
        String leagueId = "";
        for (Liga next : ligaList) {
            if (leagueName.equals(next.getLeagueName())) {
                leagueId = next.getLeagueId();
                break;
            }
        }
        return searchEquipo(leagueId, nombreLiveScore, ligaList, equipoList);
    }

    @Transactional(propagation = Propagation.REQUIRED)
    public void searchEquipos() throws Exception {
        DateTime dt = new DateTime();

        List<Evento> eventoList = eventoRepository.obtenerUltEventosList();

        List<Equipo> equipoList = equipoRepository.getEquipoList();
        List<Liga> ligaList = ligaRepository.getLigaList();
        for (Evento evento : eventoList) {
            if (evento.getDrawId() == null) continue;
            String[] equipos = StringUtils.split(evento.getTeams(), "-");
            String equipo1Str = StringUtil.trim(equipos[0].trim());
            String equipo2Str = StringUtil.trim(equipos[1].trim());

            Equipo equipo1 = searchEquipo(evento.getLeagueId(), equipo1Str, ligaList, equipoList);
            Equipo equipo2 = searchEquipo(evento.getLeagueId(), equipo2Str, ligaList, equipoList);
            if (equipo1 != null) {
                evento.setEquipo1(equipo1.getNombre());
                evento.setLiga1(equipo1.getLiga());
                equipo1.setUltEvento(evento.getEventId());
                equipoRepository.save(equipo1);
            }
            if (equipo2 != null) {
                evento.setEquipo2(equipo2.getNombre());
                evento.setLiga2(equipo2.getLiga());
                equipo2.setUltEvento(evento.getEventId());
                equipoRepository.save(equipo2);
            }
            if (equipo1 == null) {
                LOG.info("equipo no encontrado searchEquipos <" + equipo1Str + "> ");
                LOG.info("Equipos no encontrados " + evento);
            }
            if (equipo2 == null) {
                LOG.info("equipo no encontrado searchEquipos <" + equipo2Str + ">");
                LOG.info("Equipos no encontrados " + evento);
            }
            eventoRepository.save(evento);
        }

    }


    @Transactional(propagation = Propagation.REQUIRED)
    public void downloadEquipos() throws Exception {
        final String URL = "http://www.soccerstats.com/";
        DateTime dateTime = new DateTime();

        List<Liga> ligaList = ligaRepository.getLigaList();


        ExecutorService executor = Executors.newFixedThreadPool(15);

        List<Future<String>> list = new ArrayList<Future<String>>();

        for (final Liga liga : ligaList) {
            if (StringUtils.isBlank(liga.getLeagueId())
                    || StringUtils.isBlank(liga.getUrl())
                    ) continue;
//            if(!liga.getLeagueId().equals("COL")) continue;

            Callable<String> task = new Callable<String>() {
                public String call() throws Exception {
                    int rows = 0;
                    try {
                        rows = ligaService.downloadEstadisticasLiga(liga);
                    } catch (Exception ex) {
                        LOG.error("Error al procesar liga <" + liga.getNombre() + ">");
                    }
                    return "Liga <" + liga.getNombre() + "> equipos <" + rows + "> ";
                }
            };

            Future<String> future = executor.submit(task);
            list.add(future);
        }

        for (Future<String> fut : list) {
            try {
                LOG.info(new Date() + "::" + fut.get());
            } catch (ExecutionException e) {
                LOG.error("error", e);
            }
        }
        executor.shutdown();
    }

    private Equipo searchEquipo(final String leagueId,
                                final String equipo1Str,
                                List<Liga> ligaList,
                                List<Equipo> equipoList) {

        Collection ligaFoundList = Collections2.filter(ligaList, new Predicate<Liga>() {
            public boolean apply(@javax.validation.constraints.NotNull Liga liga) {
                boolean result = false;
/*
                if ("AR2".equals(leagueId)) {
                    result = liga.hasLeagueId("AR3");
                }
*/
                return result || liga.hasLeagueId(leagueId);
            }
        });

        List<String> ligaNombreList = new ArrayList<String>();
        for (Object next : ligaFoundList) {
            Liga liga = (Liga) next;
            ligaNombreList.add(liga.getNombre());
        }

        for (Equipo equipo : equipoList) {
            if (ligaNombreList.contains(equipo.getLiga())
                    && equipo.es(equipo1Str)) {
                return equipo;
            }
        }
        for (Equipo equipo : equipoList) {
            if (equipo.es(equipo1Str)) {
                return equipo;
            }
        }
        return null;
    }

    private List<Equipo> getAliasIntralot() {
        List<Equipo> equipoList = new ArrayList<Equipo>();

        equipoList.add(new Equipo("Argentinos Jrs", "Argentina", "Argentinos Jr"));
        equipoList.add(new Equipo("Guarani", "Argentina2", "Guarani A Franco"));
        equipoList.add(new Equipo("Colon", "Argentina", "Colon Santa Fe"));
        equipoList.add(new Equipo("Chacarita Jrs", "Argentina2", "Chacarita"));

        equipoList.add(new Equipo("Crucero del N.", "Argentina", "Crucero Del Norte"));
        equipoList.add(new Equipo("Atl. Tucuman", "Argentina2", "Atletico Tucuman"));
        equipoList.add(new Equipo("Union Santa Fe", "Argentina", "Union Santa Fe"));

        equipoList.add(new Equipo("Temperley", "Argentina", "Atl Temperley"));
        equipoList.add(new Equipo("Ind. Rivadavia", "Argentina2", "Indep Rivadavia"));
        equipoList.add(new Equipo("Sport. Belgrano", "Argentina2", "Sportivo Belgrano"));
        equipoList.add(new Equipo("Santamarina", "Argentina2", "Depor Santamarina"));
        equipoList.add(new Equipo("Instituto", "Argentina2", "Instituto Cordoba"));
        equipoList.add(new Equipo("Estud. San Luis", "Argentina2", "Sport Estudiantes"));

        equipoList.add(new Equipo("Defensa y J.", "Argentina", "Defensa Justicia"));
        equipoList.add(new Equipo("Gimnasia", "Argentina", "Gimnasia La Plata"));
        equipoList.add(new Equipo("Estudiantes", "Argentina", "Estudiantes Lp"));
        equipoList.add(new Equipo("Atl. Rafaela", "Argentina", "Rafaela"));
        equipoList.add(new Equipo("Newells", "Argentina", "Newells Old Boys"));

        equipoList.add(new Equipo("Grödig", "Austria", "Grodig"));
//        equipoList.add(new Equipo("Wolfsberger", "Austria", "ATSV Wolfsberg"));
        equipoList.add(new Equipo("Pellets WAC", "Austria", "Wolfsberger;Wolfsberger AC"));
        equipoList.add(new Equipo("Rapid Wien", "Austria", "Rapid Vienna"));
        equipoList.add(new Equipo("Austria Wien", "Austria", "Austria Vienna"));
        equipoList.add(new Equipo("Admira", "Austria", "Admira Wm"));


        equipoList.add(new Equipo("Coritiba", "Brazil", "Curitiba"));
        equipoList.add(new Equipo("Atletico MG", "Brazil", "Atletico Mg"));
        equipoList.add(new Equipo("Vasco da Gama", "Brazil", "Vasco Da Gama"));

//        equipoList.add(new Equipo("Bahia", "Brazil2", ""));
        equipoList.add(new Equipo("Vitória", "Brazil2", "Vitoria Bahia"));
        equipoList.add(new Equipo("Criciúma", "Brazil2", "Criciuma"));
//        equipoList.add(new Equipo("America RN", "Brazil2", "America Natal"));

        equipoList.add(new Equipo("America MG", "Brazil2", "America Mineiro"));
        equipoList.add(new Equipo("ABC", "Brazil2", "Abc Natal"));
        equipoList.add(new Equipo("Paysandu", "Brazil2", "Paysandu Sc"));


        equipoList.add(new Equipo("Oostende", "Belgium", "Oostande"));
        equipoList.add(new Equipo("Zulte-Waregem", "Belgium", "Zulte Waregem"));

        equipoList.add(new Equipo("Mouscron-P.", "Belgium", "Mouscron Peruwelz"));
        equipoList.add(new Equipo("KV Mechelen", "Belgium", "Mechelen"));
        equipoList.add(new Equipo("Beveren", "Belgium", "Waasland Beveren"));

        equipoList.add(new Equipo("Bolívar", "Bolivia", "Bolivar"));
        equipoList.add(new Equipo("Universitario", "Bolivia", "Univ. De Sucre"));
        equipoList.add(new Equipo("Club Petrolero", "Bolivia", "Petrolero"));
        equipoList.add(new Equipo("Oriente", "Bolivia", "Oriente Petrolero"));
        equipoList.add(new Equipo("Nacional Potosí", "Bolivia", "Nacional Potosi"));
        equipoList.add(new Equipo("Real Potosí", "Bolivia", "Real Potosi"));
        equipoList.add(new Equipo("Sport Boys", "Bolivia", "Sport Boys W."));
        equipoList.add(new Equipo("U. de Pando", "Bolivia", "Univ. De Pando"));
        equipoList.add(new Equipo("Wilstermann", "Bolivia", "Jorge Wilstermann"));
        equipoList.add(new Equipo("San José", "Bolivia", "San Jose Oruro"));


        equipoList.add(new Equipo("Uniautónoma", "Colombia", "Uniautonoma"));
        equipoList.add(new Equipo("Chicó FC", "Colombia", "Chico"));
        equipoList.add(new Equipo("Petrolera", "Colombia", "Alianza Petrolera"));
        equipoList.add(new Equipo("Santa Fe", "Colombia", "Deportiva Santa Fe"));
        equipoList.add(new Equipo("Ind. Medelin", "Colombia", "Ind. Medellin"));
        equipoList.add(new Equipo("Cucuta Dep.", "Colombia", "Depor Cucuta"));
        equipoList.add(new Equipo("Jag. de Cordoba", "Colombia", "Jaguares"));
        equipoList.add(new Equipo("Itagüí FC", "Colombia", "Aguilas Doradas;Itagui Ditares;Aguilas Pereira"));


        equipoList.add(new Equipo("S. Wanderers", "Chile", "Santiago Wanderers"));
        equipoList.add(new Equipo("U. Concepcion", "Chile", "U. De Concepcion"));
        equipoList.add(new Equipo("S. Wanderers", "Chile", "Santiago Wanderers"));
        equipoList.add(new Equipo("San Marcos Aric", "Chile", "San Marcos Arica"));
        equipoList.add(new Equipo("Iquique", "Chile", "Municipal Iquique"));
        equipoList.add(new Equipo("O`Higgins", "Chile", "O Higgins"));
        equipoList.add(new Equipo("U. de Chile", "Chile", "Univ. de Chile"));
        equipoList.add(new Equipo("Unión Española", "Chile", "Union Espanola"));


        equipoList.add(new Equipo("Sonderjylland", "Denmark", "Sonderjyske"));
        equipoList.add(new Equipo("Hobro IK", "Denmark", "Hobro"));
        equipoList.add(new Equipo("AaB Aalborg", "Denmark", "Aalborg"));
        equipoList.add(new Equipo("FC Copenhague", "Denmark", "Fc Copenhagen"));
        equipoList.add(new Equipo("FC Midtjylland", "Denmark", "Midtjylland"));
        equipoList.add(new Equipo("Brondby IF", "Denmark", "Brondby"));
        equipoList.add(new Equipo("OB Odense", "Denmark", "Odense"));

        equipoList.add(new Equipo("LDU de Loja", "Ecuador", "Ldu Loja"));
        equipoList.add(new Equipo("Deportivo Quito", "Ecuador", "Depor Quito"));
        equipoList.add(new Equipo("Dep. Cuenca", "Ecuador", "Depor Cuenca"));
        equipoList.add(new Equipo("U. Catolica", "Ecuador", "Univ Catolica (Ecu)"));
        equipoList.add(new Equipo("Mushuc Runa", "Ecuador", "Mushuc Runa Sc"));
        equipoList.add(new Equipo("Independiente", "Ecuador", "Indep. Jose Teran"));
        equipoList.add(new Equipo("LDU de Quito", "Ecuador", "Ldu Quito"));
        equipoList.add(new Equipo("Barcelona SC", "Ecuador", "Barcelona Gua"));
        equipoList.add(new Equipo("Aucas", "Ecuador", "Aukas"));
        equipoList.add(new Equipo("River Ecuador", "Ecuador", "Depor River Plate"));

        equipoList.add(new Equipo("FC Nurnberg", "Germany2", "Nurenberg"));
        equipoList.add(new Equipo("1860 München", "Germany2", "1860 Munich"));
        equipoList.add(new Equipo("Karlsruher SC", "Germany2", "Karlsruher"));

        equipoList.add(new Equipo("Wolfsburg", "Germany", "Wolfsburgo"));
        equipoList.add(new Equipo("Bayern Munich", "Germany", "Bayern"));
        equipoList.add(new Equipo("Hamburger SV", "Germany", "Hamburgo"));
        equipoList.add(new Equipo("FC Köln", "Germany", "Colonia"));
        equipoList.add(new Equipo("Freiburg", "Germany", "Friburgo"));
        equipoList.add(new Equipo("Mönchengladbach", "Germany", "Monchengladbach"));
        equipoList.add(new Equipo("FSV Mainz 05", "Germany", "Mainz"));
        equipoList.add(new Equipo("Hannover 96", "Germany", "Hannover"));
        equipoList.add(new Equipo("Hertha Berlin", "Germany", "Hertha"));

        equipoList.add(new Equipo("IFK Goteborg", "Sweden", "Gotemburgo"));

        equipoList.add(new Equipo("Marseille", "France", "Marsella"));
        equipoList.add(new Equipo("Paris SG", "France", "Paris St. Germain"));
        equipoList.add(new Equipo("Nice", "France", "Niza"));
        equipoList.add(new Equipo("Saint-Etienne", "France", "St. Etienne"));

        equipoList.add(new Equipo("Niort", "France-L2", "Chamois Niortais"));
        equipoList.add(new Equipo("Créteil", "France-L2", "Creteil"));
        equipoList.add(new Equipo("Arles-Avignon", "France-L2", "Arles"));
        equipoList.add(new Equipo("GFC Ajaccio", "France-L2", "Gfco Ajaccio"));

//        equipoList.add(new Equipo("MyPa", "Finland", "Myllykoski"));
        equipoList.add(new Equipo("SJK", "Finland", "Seinajoen Jk"));
        equipoList.add(new Equipo("KuPS", "Finland", "Kuopion"));
        equipoList.add(new Equipo("FF Jaro", "Finland", "Jaro"));
        equipoList.add(new Equipo("FC Lahti", "Finland", "Lahti"));
        equipoList.add(new Equipo("IFK Mariehamn", "Finland", "Mariehamn"));
        equipoList.add(new Equipo("Vaasa PS", "Finland", "Vaasa"));
        equipoList.add(new Equipo("Turku PS", "Finland", "Turku"));
        equipoList.add(new Equipo("HJK Helsinki", "Finland", "Helsinki"));
        equipoList.add(new Equipo("FC Inter", "Finland", "Inter Turku"));
        equipoList.add(new Equipo("KooTeePee", "Finland", "Kotka"));


        equipoList.add(new Equipo("Yeovil Town", "England3", "Yeovil"));
        equipoList.add(new Equipo("Milton Keynes", "England3", "Mk Dons"));

        equipoList.add(new Equipo("Crewe Alexandra", "England3", "Crewe"));
        equipoList.add(new Equipo("Sheffield Utd", "England3", "Sheffield Utd."));
        equipoList.add(new Equipo("Swindon Town", "England3", "Swindon"));
        equipoList.add(new Equipo("Coventry City", "England3", "Coventry"));
        equipoList.add(new Equipo("Crawley Town", "England3", "Crawley"));


        equipoList.add(new Equipo("Nottm Forest", "England2", "Nottingham F."));
        equipoList.add(new Equipo("Wigan Athletic", "England2", "Wigan"));
        equipoList.add(new Equipo("Wolverhampton", "England2", "Wolves"));
        equipoList.add(new Equipo("Cardiff City", "England2", "Cardiff"));
        equipoList.add(new Equipo("Brighton & Hove", "England2", "Brighton"));
        equipoList.add(new Equipo("Leeds Utd", "England2", "Leeds"));
        equipoList.add(new Equipo("Norwich City", "England2", "Norwich"));
        equipoList.add(new Equipo("Birmingham City", "England2", "Birmingham"));
        equipoList.add(new Equipo("Ipswich Town", "England2", "Ipswich"));

        equipoList.add(new Equipo("Southend Utd", "England4", "Southend"));
        equipoList.add(new Equipo("Wimbledon", "England4", "Afc Wimbledon"));
        equipoList.add(new Equipo("Cambridge Utd", "England4", "Cambridge"));
        equipoList.add(new Equipo("Luton Town", "England4", "Luton"));
        equipoList.add(new Equipo("Dagenham & R", "England4", "Dagenham & Red"));
        equipoList.add(new Equipo("Carlisle Utd", "England4", "Carlisle"));
        equipoList.add(new Equipo("Oxford Utd", "England4", "Oxford"));
        equipoList.add(new Equipo("Exeter City", "England4", "Exeter"));

        equipoList.add(new Equipo("Newcastle Utd", "England", "Newcastle"));
        equipoList.add(new Equipo("Hull City", "England", "Hull"));
        equipoList.add(new Equipo("Swansea City", "England", "Swansea"));
        equipoList.add(new Equipo("QP Rangers", "England", "Qpr"));
        equipoList.add(new Equipo("West Ham Utd", "England", "West Ham"));
        equipoList.add(new Equipo("Leicester City", "England", "Leicester"));
        equipoList.add(new Equipo("West Bromwich", "England", "West Brom"));
        equipoList.add(new Equipo("Stoke City", "England", "Stoke"));

        equipoList.add(new Equipo("Ajax Amsterdam", "Holland", "Ajax"));
        equipoList.add(new Equipo("FC Utrecht", "Holland", "Utrecht"));
        equipoList.add(new Equipo("PSV Eindhoven", "Holland", "Psv Eindhoven"));
        equipoList.add(new Equipo("FC Utrecht", "Holland", "Utrecht"));
        equipoList.add(new Equipo("FC Dordrecht", "Holland", "Dordrecht"));
        equipoList.add(new Equipo("PEC Zwolle", "Holland", "Zwolle"));
        equipoList.add(new Equipo("FC Groningen", "Holland", "Groningen"));
        equipoList.add(new Equipo("Willem II", "Holland", "Willem"));
        equipoList.add(new Equipo("FC Twente", "Holland", "Twente"));
        equipoList.add(new Equipo("ADO Den Haag", "Holland", "Den Haag"));

        equipoList.add(new Equipo("Genoa", "Italy", "Genova"));
        equipoList.add(new Equipo("AC Milan", "Italy", "Milan"));
        equipoList.add(new Equipo("Hellas Verona", "Italy", "Verona"));

        equipoList.add(new Equipo("Monarcas", "Mexico", "Morelia"));
        equipoList.add(new Equipo("Jaguares", "Mexico", "Chiapas"));
        equipoList.add(new Equipo("Tijuana", "Mexico", "Club Tijuana"));
        equipoList.add(new Equipo("CF America", "Mexico", "America"));
        equipoList.add(new Equipo("Tigres", "Mexico", "Tigres Uanl"));
        equipoList.add(new Equipo("U. Guadalajara", "Mexico", "Univ. Guadalajara;Leones Negros"));
        equipoList.add(new Equipo("Leon", "Mexico", "Club Leon"));

        equipoList.add(new Equipo("CD UT Cajamarca", "PERU", "Utc"));
        equipoList.add(new Equipo("Universidad Cesar Vallejo", "PERU", "U. Cesar Vallejo"));
        equipoList.add(new Equipo("Universidad San Martin", "PERU", "U. San Martin"));
        equipoList.add(new Equipo("FBC Melgar", "PERU", "Melgar"));
        equipoList.add(new Equipo("U.Comercio", "PERU", "Union Comercio"));
        equipoList.add(new Equipo("Inti Gas Deportes", "PERU", "Inti Gas"));

        equipoList.add(new Equipo("Universitario de Deportes", "PERU", "Universitario"));
        equipoList.add(new Equipo("Ayacucho FC", "PERU", "Ayacucho"));
        equipoList.add(new Equipo("Deportivo Municipal", "PERU", "Depor Municipal;Municipal"));

        equipoList.add(new Equipo("Carlos A. Mannucci", "PERU2", "Carlos Mannucci"));
        equipoList.add(new Equipo("Alianza Universidad", "PERU2", "Alianza Huanuco"));
        equipoList.add(new Equipo("Deportivo Coopsol", "PERU2", "Depor Coopsol"));
        equipoList.add(new Equipo("Club Sport Victoria", "PERU2", "Sport Victoria"));
        equipoList.add(new Equipo("CD Atletico Minero del Rimac", "PERU2", "Atletico Minero"));

        equipoList.add(new Equipo("Guaraní", "Paraguay", "Guarani Asuncion"));
        equipoList.add(new Equipo("General Díaz", "Paraguay", "General Diaz"));
        equipoList.add(new Equipo("San Lorenzo", "Paraguay", "Sport. San Lorenzo;San Lorenzo (Par)"));
        equipoList.add(new Equipo("Olimpia", "Paraguay", "Olimpia Asuncion"));
        equipoList.add(new Equipo("Nacional", "Paraguay", "Nacional Asuncion"));
        equipoList.add(new Equipo("Dep. Capiata", "Paraguay", "Depor Capiata"));
        equipoList.add(new Equipo("Sport. Luqueño", "Paraguay", "Sportivo Luqueno"));
        equipoList.add(new Equipo("Deportivo Santa", "Paraguay", "Depor Santani"));

        equipoList.add(new Equipo("Vitoria Setubal", "Portugal", "Setubal"));
        equipoList.add(new Equipo("Nacional", "Portugal", "Nacional Madeira"));
        equipoList.add(new Equipo("Paços Ferreira", "Portugal", "Pacos Ferreira"));
        equipoList.add(new Equipo("FC Porto", "Portugal", "Porto"));
        equipoList.add(new Equipo("Sporting CP", "Portugal", "Sporting Lisboa"));

//        equipoList.add(new Equipo("Sandnes Ulf", "Norway", "Sandnes"));
        equipoList.add(new Equipo("Rosenborg", "Norway", "Rosenburgo"));
        equipoList.add(new Equipo("Stabæk", "Norway", "Stabaek"));
        equipoList.add(new Equipo("Sarpsborg 08", "Norway", "Sarpsborg"));
        equipoList.add(new Equipo("Bodo/Glimt", "Norway", "Bodo Glimt"));
        equipoList.add(new Equipo("Lillestrom SK", "Norway", "Lillestrom"));
        equipoList.add(new Equipo("Viking FK", "Norway", "Vikingo"));
        equipoList.add(new Equipo("Sarpsborg 08", "Norway", "Sarpsborg"));
        equipoList.add(new Equipo("Odd BK", "Norway", "Odds Bk"));

        equipoList.add(new Equipo("Sandnes Ulf", "Norway2", "Sandnes"));
        equipoList.add(new Equipo("SK Brann", "Norway2", "Brann"));
//        equipoList.add(new Equipo("Ull/Kisa", "Norway2", "Ullensaker Kisa"));


        equipoList.add(new Equipo("Wanderers", "Uruguay", "M. Wanderers"));
        equipoList.add(new Equipo("Tacuarembó", "Uruguay", "Tacuarembo"));
        equipoList.add(new Equipo("Peñarol", "Uruguay", "Penarol"));
        equipoList.add(new Equipo("River Plate", "Uruguay", "Atl River Plate"));
        equipoList.add(new Equipo("Cerro", "Uruguay", "Atletico Cerro"));
        equipoList.add(new Equipo("Juventud", "Uruguay", "Juventud Dl Piedras"));
        equipoList.add(new Equipo("Racing CM", "Uruguay", "Racing Montevideo"));

        equipoList.add(new Equipo("Sporting KC", "USA", "Kansas"));
        equipoList.add(new Equipo("L.A. Galaxy", "USA", "Los Angeles"));
        equipoList.add(new Equipo("Chicago Fire", "USA", "Chicago"));
        equipoList.add(new Equipo("Toronto FC", "USA", "Toronto"));
        equipoList.add(new Equipo("Montreal Impact", "USA", "Montreal"));
        equipoList.add(new Equipo("Real Salt Lake", "USA", "Salt Lake"));
        equipoList.add(new Equipo("New York RB", "USA", "New York"));
        equipoList.add(new Equipo("FC Dallas", "USA", "Dallas"));


        equipoList.add(new Equipo("AS Roma", "Italy", "Roma"));


        equipoList.add(new Equipo("Dundee Utd", "Scotland", "Dundee Utd."));
        equipoList.add(new Equipo("Dundee FC", "Scotland", "Dundee"));


//        equipoList.add(new Equipo("Osters IF", "Sweden2", "Oster"));
//        equipoList.add(new Equipo("Husqvarna FF", "Sweden2", "Husqvarna"));
        equipoList.add(new Equipo("Varberg", "Sweden2", "Varbergs"));
//        equipoList.add(new Equipo("GIF Sundsvall", "Sweden2", "Sundsvall"));
        equipoList.add(new Equipo("Angelholm", "Sweden2", "Angelholms"));
        equipoList.add(new Equipo("AFC United", "Sweden2", "AFC Utd"));
        equipoList.add(new Equipo("Ostersunds FK", "Sweden2", "Ostersunds"));
        equipoList.add(new Equipo("Frej Taby", "Sweden2", "Frej"));

        equipoList.add(new Equipo("Falkenbergs", "Sweden", "Falkenberg"));
        equipoList.add(new Equipo("Halmstads BK", "Sweden", "Halmstad"));
        equipoList.add(new Equipo("AIK Stockholm", "Sweden", "Aik Estocolmo"));
        equipoList.add(new Equipo("Kalmar FF", "Sweden", "Kalmar"));
        equipoList.add(new Equipo("Helsingborg", "Sweden", "Helsingburgo"));
        equipoList.add(new Equipo("Elfsborg", "Sweden", "Elfsburgo"));
        equipoList.add(new Equipo("Malmo FF", "Sweden", "Malmo"));
        equipoList.add(new Equipo("Orebro SK", "Sweden", "Orebro"));
        equipoList.add(new Equipo("GIF Sundsvall", "Sweden", "Sundsvall"));
        equipoList.add(new Equipo("BK Hacken", "Sweden", "Hacken"));


        equipoList.add(new Equipo("FC Sevilla", "Spain", "Sevilla"));
        equipoList.add(new Equipo("Celta Vigo", "Spain", "Celta"));
        equipoList.add(new Equipo("Deportivo", "Spain", "La Coruna"));

        equipoList.add(new Equipo("Racing", "Spain2", "Racing Santander"));
        equipoList.add(new Equipo("Mirandés", "Spain2", "Mirandes"));
        equipoList.add(new Equipo("Leganés", "Spain2", "Leganes"));
        equipoList.add(new Equipo("Recreativo", "Spain2", "Huelva"));
        equipoList.add(new Equipo("Real Betis", "Spain2", "Betis"));

        equipoList.add(new Equipo("FC Zurich", "Switzerland", "Zurich"));
        equipoList.add(new Equipo("St. Gallen", "Switzerland", "St Gallen"));


        return equipoList;
    }

    @Transactional
    public void updateAliasLiveScore() {
        List<Equipo> equipoAliasList = AliasLiveScore.getAliasLiveScore();

        for (Equipo equipo : equipoAliasList) {
            Equipo equipoBase = equipoRepository.findOne(new EquipoPK(equipo.getLiga(), equipo.getNombre()));
            if (equipoBase == null) {

                LOG.error("livescore - Error en el equipo " + equipo.getNombre());
                continue;
//                throw new RuntimeException("Error en el equipo " + equipo.getNombre());
            }

            equipoBase.setAlias_livescore(equipo.getAlias());
            equipoRepository.save(equipoBase);
        }
    }

    @Transactional
    public void updateAliasIntralot() {
        List<Equipo> equipoAliasList = getAliasIntralot();

        for (Equipo equipo : equipoAliasList) {
            Equipo equipoBase = equipoRepository.findOne(new EquipoPK(equipo.getLiga(), equipo.getNombre()));
            if (equipoBase == null) {
                LOG.error("intralot - Error en el equipo " + equipo.getNombre());
                continue;
//                throw new RuntimeException("Error en el equipo " + equipo.getNombre());
            }
            equipoBase.setAlias_intralot(equipo.getAlias());
            equipoRepository.save(equipoBase);
        }
    }


    public static void main(String[] args) {
        String result = "(1 - 1)";
        System.out.println(result.substring(1, result.length() - 1));
    }
}
